/**
 * 更新 CSS 变量的函数
 * @param variables 要更新的 CSS 变量与其新值的映射
 */
function updateCSSVariables(
    variables: { [key: string]: string },
    id = '__hiss-styles__',
): void {
    // 获取或创建内联样式表元素
    const styleElement =
        document.querySelector(`#${id}`) || document.createElement('style');

    styleElement.id = id;

    // 构建要更新的 CSS 变量的样式文本
    let cssText = ':root {';
    for (const key in variables) {
        if (Object.prototype.hasOwnProperty.call(variables, key)) {
            cssText += `${key}: ${variables[key]};`;
        }
    }
    cssText += '}';

    // 将样式文本赋值给内联样式表
    styleElement.textContent = cssText;

    // 将内联样式表添加到文档头部
    if (!document.querySelector(`#${id}`)) {
        setTimeout(() => {
            document.head.append(styleElement);
        });
    }
}

export {updateCSSVariables};
